Global-positioning system (gps) update interval based on sensor

ABSTRACT

In one embodiment, a method includes transmitting at a pre-determined polling frequency an activation signal waking from a sleep mode an application on a mobile computing device and causing the application to activate a location service of the mobile computing device for a pre-determined sampling duration. The pre-determined polling frequency and the pre-determined sampling duration are determined at least in part by detecting a movement of the mobile computing device. The method also includes receiving location data from the mobile computing device after the pre-determined sampling duration. The location data is responsive to a transmission signal.

PRIORITY

This application is continuation under 35 U.S.C. §120 of U.S. patentapplication Ser. No. 13/760,692, filed 6 Feb. 2013, which is acontinuation-in-part under 35 U.S.C. §120 of U.S. patent applicationSer. No. 13/490,394, filed 6 Jun. 2012, which are incorporated herein byreference.

TECHNICAL FIELD

This disclosure generally relates to location tracking

BACKGROUND

A mobile electronic device, such as a smartphone, tablet device, laptopcomputer, etc., has general computing capabilities. The mobileelectronic device may execute one or more applications such as forexample, communications through short-message service (SMS),communications through multimedia-messaging service (MMS), accessinge-mail, accessing Internet content, communications through a short-rangewireless (e.g. infrared or BLUETOOTH), business applications, gaming, orphotography using a camera integrated into the mobile electronic device.A smartphone is a particular class of mobile electronic device withtelephony capabilities provided through a radio-frequency (RF)communication link whilst moving within a geographic area. Thesmartphone may have a touch sensor integrated with a display screen,where the touch sensor detects touch inputs and the display screendisplays content. The smartphone connects to a cellular network foraccess to the public telephone network and Internet content.

SUMMARY OF PARTICULAR EMBODIMENTS

In particular embodiments, a server may be able to automatically andwithout any manual input from the user, track the location of a mobilecomputing device. The server may ping the mobile computing device atpre-determined intervals to obtain location information through anapplication of the mobile computing device running in a background mode.The server adaptively adjusts the global-positioning system (GPS) datacollection interval and duration depending on whether mobile device ismoving or stationary. Determination of whether the mobile computingdevice is moving or is stationary is based on comparing the currentlocation of the mobile computing device with the location from theprevious reading or input from sensors of the mobile computing device.For example, if the server may determine the user is moving based onaccelerometer data, the data collection interval and duration may bedecreased to capture less accurate, but more frequent GPS readings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example social-networking system.

FIG. 2A illustrates an example method for ambient-location tracking

FIG. 2B illustrates an example method for movement-based intervalupdates.

FIG. 3 illustrates an example mobile device.

FIG. 4 illustrates example internal components of an example mobiledevice.

FIG. 5 illustrates an example communication component of an examplemobile device.

DESCRIPTION OF EXAMPLE EMBODIMENTS

FIG. 1 illustrates an example social-networking system. In the exampleof FIG. 1, a social-networking system 30 and an external server 32 arecoupled through a network 34. Network 34 generally represents a networkor collection of networks (such as for example the Internet, a corporateintranet, a virtual private network (VPN), a local-area network (LAN), awireless-local-area network (WLAN), a cellular network, a wide-areanetwork (WAN), a metropolitan-area network (MAN), or a combination oftwo or more such networks) over which social-networking system 30 orexternal server 32 may communicate with mobile device 10.

One or more users may interact with social-networking system 30 usingmobile devices 10. Mobile devices 10 may communicate withsocial-networking system 30 via an application such as a web browser ornative application executed on processor of mobile devices 10. Inparticular embodiments, one or more mobile devices 10 may be asmartphone, as described above. As an example and not by way oflimitation, interactions between mobile devices 10 and social-networkingsystem 30 may include viewing profiles of other users ofsocial-networking system 30, contributing and interacting with mediaitems, joining groups, listing and confirming attendance at events,checking in at locations, liking certain pages, creating pages, andperforming other tasks that facilitate social interaction.

Social-networking system 30 includes components used to storeinformation about users and objects represented in the social networkingenvironment and relationships among the users and objects. Thesocial-networking system 30 may include components enabling interactionsto mobile devices 10, as described below. Components ofsocial-networking system 30 may be hosted on one or more servers. Thisdisclosure contemplates any suitable servers, such as servers that areinternal to social-networking system 30 or external servers 32. As anexample and not by way of limitation, one or more servers may eachinclude one or more advertising servers, applications servers, catalogservers, communications servers, database servers, exchange servers, faxservers, file servers, game servers, home servers, mail servers, messageservers, news servers, name or domain-name servers (DNS), print servers,proxy servers, sound servers, standalone servers, web servers, orweb-feed servers. In particular embodiments, a server includes hardware,software, or both for providing the functionality of the server. As anexample and not by way of limitation, a server that operates as a webserver may be capable of hosting websites containing web pages orelements of web pages and include appropriate hardware, software, orboth for doing so. In particular embodiments, a web server may hostHyper Text Markup Language (HTML) or other suitable files or dynamicallycreate or constitute files for web pages on request. In response to aHyper Text Transfer Protocol (HTTP) or other request from mobile devices10, the web server may communicate one or more such files to mobiledevices 10. As another example, a server that operates as a databaseserver may be capable of providing an interface for interacting with oneor more data stores (such as for example, action store 38 describedbelow). Where appropriate, a server may include one or more servers; beunitary or distributed; span multiple locations; span multiple machines;span multiple datacenters; or reside in a cloud, which may include oneor more cloud components in one or more networks.

A social graph 36 of social-networking system 30 stores the connectionseach user has with other users of social-networking system 30. Inparticular embodiments, social graph 36 may also store second-orderconnections. The connections may thus be direct or indirect. As anexample and not by way of limitation, if user A is a first-orderconnection of user B but not of user C, and B is a first-orderconnection of C, then C is a second-order connection of A on socialgraph 36. An action store 38 stores actions that have been performed bythe users of social-networking system 30, along with an indication ofthe time associated with those actions and references to any objectsrelated to the actions. Action store 38 may store statistics forspecified categories of actions. As an example and not by way oflimitation, for a given user, action store 38 may contain a number ofstories posted in 30 days by a user, a number of photos posted by theuser in 30 days, or a number of distinct users that received comments ofthe user within the past 30 days. For a given connection between twousers, user A and user B, action store 38 may contain actions such asthe number of profile page views from user A to user B, the number ofphoto page views from user A to user B, and the number of times user Aand user B were tagged in the same photo, and these actions may beassociated with a timestamp or may be filtered by a cutoff (e.g., 24hours, 90 days, etc.). The actions recorded in action store 38 may befarmed actions, which are performed by a user in response to thesocial-networking system 30 providing suggested choices of actions tothe user.

A predictor module 40 is responsible for computing a set predictorfunctions that predict whether a user will perform a set ofcorresponding actions. Each predictor function may be representative ofa user's interest in a particular action associated with the predictorfunction. The historical activity of a user may be used as a signal of auser's future interest in the same activity. In particular embodiments,the predictor function is generated using a machine-learned algorithm,that is trained using a user's historical activity associated with anaction. Predictor module 40 thus provides a predictor function for eachof a set of actions, where a predictor function may take as an input theuser's historical activity and then outputs a measure of the likelihoodthat the user will engage in the corresponding activity.

An authentication manager 42 authenticates users on mobile devices 10 asbeing registered users of social-networking system 30. Authenticationmanager 42 may allow users to log into social-networking system 30 frommobile devices 10 through an application supporting social-networkingsystem 30. An application programming interface (API) 44 works inconjunction with authentication manager 40 to validate users viaexternal applications 46A-B stored on external server 32. In particularembodiments, authentication manager 42 in conjunction with API 44 mayperiodically verify account information of the user, as described below.

In particular embodiments, social-networking system 30 may include anauthorization server (or other suitable component(s)) that allows usersto opt in to or opt out of having their actions logged bysocial-networking system 30 or shared with other systems (e.g.third-party systems 32), for example, by setting appropriate privacysettings. A privacy setting of a user may determine what informationassociated with the user may be logged, how information associated withthe user may be logged, when information associated with the user may belogged, who may log information associated with the user, whominformation associated with the user may be shared with, and for whatpurposes information associated with the user may be logged or shared.Authorization servers may be used to enforce one or more privacysettings of the users of social-networking system 30 through blocking,data hashing, anonymization, or other suitable techniques asappropriate.

An affinity module 48 provides a measure of affinity based on input dataabout the user from the social-networking system 30 using the predictorfunctions. Various processes may request a measure of affinity fromaffinity module 48. As an example and not by way of limitation, theprocesses may include basic social-networking system 30 functionality,such as for example newsfeed algorithms, advertising-targetingalgorithms, or friend-suggestion algorithms. Other processes thatrequest measures of affinity may be executed by one or more platformapplications 50A-B, which are applications that operate within thesocial-networking system 30 but may be provided by third parties otherthan an operator of the social-networking system 30. Platformapplications 50A-B may include social games, messaging services, or anysuitable application that uses the social platform provided bysocial-networking system 30.

In particular embodiments, the processes requesting a measure ofaffinity for a user may include one or more external applications 46A-Bexecuted on external server 32. External applications 46A-B may interactwith the social-networking system 30 via API 44. External applications46A-B can perform various operations supported by the API 44, such asenabling users to send each other messages or SMS messages throughsocial-networking system 30 or showing advertisements routed throughsocial-networking system 30. Herein, reference to SMS messagesencompasses messages in text and other forms of content, such as forexample, images or links to web content.

One or more platform applications 50A-B executed on social-networkingsystem 30 or external applications 46A-B executed on external server 32is able to automatically and without any manual input from the user,track the location of mobile device 10. In particular embodiments,social-networking system 30 or external server 32 polls or “pings”mobile device 10 using a activation signal transmitted at a pollingfrequency to obtain location information. In particular embodiments,social-networking system 30 may poll the application of mobile device 10for location data by transmitting the activation signal through network34 using a wireless communication protocol such as for example, WI-FI orthird-generation mobile telecommunications (3G). As an example and notby way of limitation, social-networking system 30 may periodically pollan application of mobile device 10 running in a background or “sleep”mode. In particular embodiments, the application is an event-drivenapplication that responds to the activation signal fromsocial-networking system 30 or external server 32. The social-networkingsystem 30 or external server 32 may adaptively adjust the pre-determinedsampling duration and polling frequency of the location determinationperformed by the application depending on the travel distance of mobiledevice 10. As an example and not by way of limitation, thepre-determined sampling duration and polling frequency may be adaptivelyadjusted based at least in part on whether mobile device 10 is moving orstationary. When mobile device 10 is moving and the travel distance isrelatively large, the social-networking system 30 may request locationdata from the application of mobile device 10 more frequently, but withlower accuracy. In particular embodiments, the location service ofmobile device 10 is activated for the pre-determined sampling durationthrough transmission of one or more location-service activation signalsthat keeps the application of mobile device 10 active for thepre-determined sampling duration. As an example and not by way oflimitation, the application of mobile device 10 may receive anactivation signal to wake the application every 4 minutes and one ormore location-service activation signals that activate the locationservice for 10 seconds when moving. When mobile device 10 is moving,frequent location measurements allow movement to be monitored withoutcalculating large changes in position. Since the position of mobiledevice 10 is in flux, high-accuracy-position determination of mobiledevice 10 is relatively unimportant. Although this disclosure describesa particular number of signals that wakes the application and causes theapplication to activate the location service of the mobile device, thisdisclosure contemplates any suitable number of signals to wake theapplication and cause the application to activate the location service.

As another example, when mobile device 10 is stationary and the traveldistance is relatively small, the social-networking system 30 mayrequest location data from mobile device 10 less frequently but withhigher accuracy. As an example and not by way of limitation, theapplication of mobile device 10 may receive the activation signal every10 minutes and one or more location-service activation signals toactivate the location service of mobile device 10 for 20 seconds whenstationary. Since the position of mobile device 10 is relatively fixed,frequent location measurements may not provide additional positioninformation. When mobile device 10 is stationary, it is relativelyimportant to determine the position of mobile device 10 with a highdegree of accuracy. As an example and not by way of limitation,particular social-networking functions, such as for examplelocation-based recommendations or location-based notifications maydepend on having a relatively accurate position measurement.

Social-networking system 30 may adaptively adjust the pre-determinedsampling duration and polling frequency based at least in part ondetermining whether a movement of mobile device 10 has occurred. Herein,reference to a movement encompasses any suitable movement from oneposition in space to another position in space. As described above,movement of mobile device 10 may be determined based at least in part onthe travel distance of mobile device, environmental data obtained fromone or more sensors of mobile device 10, or any combination thereof, asappropriate. In particular embodiments, the social-networking system maydetermine movement of mobile device 10 based on a signal from mobiledevice 10 based at least in part on mobile device 10 processing theenvironmental data. As an example and not by way of limitation,social-networking system 30 may transmit the activation signal to mobiledevice 10 with a lower polling frequency and larger pre-determinedsampling duration in response to receiving data from a sensor of mobiledevice 10 indicating mobile device 10 is stationary. As another example,social-networking system 30 may transmit the activation signal to mobiledevice 10 with a higher polling frequency and a lower pre-determinedsampling duration in response from a sensor of mobile device 10indicating mobile device 10 is in motion. Although this disclosuredescribes detecting movement of a mobile device using particular datareceived from the mobile device, this disclosure contemplates detectingmovement of the mobile device using any suitable data or any suitablecombination of data, such as for example location data and sensor data,received from the mobile device.

The application activates the location service of mobile device 10 inresponse to receiving the location-service activation signal. Inparticular embodiments, the location service of mobile device 10 may useone or more methods of location determination, such as for example,using the location of one or more cellular towers, crowd-sourcedlocation information associated with a WI-FI hotspot, or theglobal-positioning system (GPS) function of mobile device 10. Inparticular embodiments, the application of mobile device 10 may transmitlocation data and other relevant data, such as for example the signalstrength from nearby cellular towers. In particular embodiments, theoperating system (OS) of mobile device 10 may arbitrate collecting databy the various methods used by the location service of mobile device 10.As an example and not by way of limitation, the method used by thelocation service of mobile device 10 may depend at least in part on thepre-determined sampling duration of the location measurement. As anexample and not by way of limitation, the application may use GPS dataas the primary source of location information depending at least in parton whether mobile device 10 is able to acquire GPS data within thepre-determined sampling duration. As another example, if mobile device10 is unable to acquire the GPS data within the pre-determined samplingduration, the application may use the location determined using one ormore cellular towers or WI-FI hotspots. Although this disclosuredescribes a location service using particular methods of locationdetermination, this disclosure contemplates a location service using anysuitable method or combination of methods of location detection.

The accuracy of the location data measured by the application isdetermined at least in part by the pre-determined sampling duration thelocation service of mobile device 10 is activated. The calculation ofthe travel distance of mobile device 10 is based on comparing thecurrent location of mobile device 10 with the location from the previousreading. The travel distance of mobile device 10 may be approximated bythe following equation:

distance_(mob)=(position_(t)-position_(t-1))  (1)

Position_(t) is the position of mobile device 10 at the most recentlocation reading and position_(t-1) is the position of mobile device 10at the second-most-recent location reading. As an example and not by wayof limitation, when the travel distance of mobile device 10 issubstantially equal or less than a pre-determined distance,social-networking system 30 or external server 32 may determine mobiledevice 10 is stationary. In particular embodiments, the pre-determineddistance may be the measurement accuracy of the GPS function of mobiledevice 10. Although this disclosure describes adjusting the pollingfrequency and sampling duration to a particular number of discretesettings based on the travel distance, this disclosure contemplatesadjusting the polling frequency and sampling duration to any suitablenumber of discrete settings or a continuum of settings based on thetravel distance.

In particular embodiments, the application executed on mobile device 10receives the activation signal through network 34 that wakes theapplication from the sleep mode and activates the location service ofmobile device 10 for a pre-determined sampling duration (e.g. 10seconds). As described above, social-networking system 30 or externalserver 32 may adjust the polling frequency (i.e. the time intervalbetween signal transmissions) and sampling duration according to thetravel distance of mobile device 10. As described above, thepre-determined sampling duration depends at least in part on the desiredaccuracy of the location data. Increasing the pre-determined samplingduration increases the accuracy of the location of mobile device 10 dueat least in part to the application having a higher probability ofacquiring GPS data or the location service being able to acquire moredetailed GPS data. In particular embodiments, the pre-determinedsampling duration may be determined at least in part by the batterylevel of mobile device 10. As an example and not by way of limitation,mobile device 10 may transmit data indicative of the battery level ofmobile device 10 and the pre-determined sampling duration may bedecreased by social-networking system 30 or external server 32 if thebattery level of mobile device 10 is low. As another example, thepolling frequency may be decreased if the battery level of mobile device10 is low.

In particular embodiments, social-networking system 30 or externalserver may transmit a transmission signal to the application at the endof the pre-determined sampling duration. The application transmits theacquired location data and other relevant data to social-networkingsystem 30 or external server 32 in response to receiving thetransmission signal. After the application has transmitted the locationdata, the application may revert to the sleep mode and the locationservice may be turned off until the next polling signal is received inaccordance with the polling frequency, such that thelocation-data-acquisition sequence as described above is repeated. Inparticular embodiments, additional location-service activation signalsare periodically transmitted to mobile device 10 during location dataacquisition to keep the application from reverting to the sleep modebefore the location data is acquired.

In particular embodiments, transmission of the location data by theapplication may trigger an event-driven social-networking function. Asan example and not by way of limitation, after receiving location datafrom mobile device 10, social graph 36 of social-networking system 30may be accessed to determine if a friend of the user is in the sameproximity of the user. As another example, social-networking system 30may determine if another user with similar interests is in the samelocation as the user based on actions stored in the action store 38 ofsocial-networking system 30. As another example, transmission of thelocation data may update the status of the user as being online onsocial-networking system 30. In particular embodiments, action store 36may store interactions of the user of mobile device 10 with other usersin the same location based on the location updates made tosocial-networking system 30 or external server 32. As an example and notby way of limitation, social-networking system 30 may prompt the user toconfirm a meeting with another user who is in the same location. Inparticular embodiments, social-networking system 30 or external server32 may adjust the amount of data sent to mobile device 10 based onwhether mobile device 10 is stationary or moving. As an example and notby way of limitation, social-networking system 30 may infer that whenmobile device 10 is moving, mobile device 10 may be switching betweendifferent cellular towers and send lower-bandwidth information.

In particular embodiments, the application may acquire data to providecontext to the location data of mobile device 10. The application mayactivate sensors of mobile device 10 to collect environmental data. Asan example and not by way of limitation, the application may activatethe microphone of mobile device 10 to measure ambient noise. As anotherexample, the application may poll an accelerometer of mobile device 10to determine a mode of transportation being used by the user.

FIG. 2A illustrates an example method for ambient location tracking. Themethod may start at Step 100, where an activation signal is transmittedby a server at a pre-determined polling frequency that wakes anapplication on a mobile device from a sleep mode and causing theapplication to activate the location service of the mobile device for apre-determined sampling duration. In particular embodiments, thepre-determined polling frequency and the pre-determined samplingduration are determined at least in part by a travel distance of themobile device. In other particular embodiments, the pre-determinedsampling duration may be adjusted depending at least in part on whetherthe mobile device is stationary or in motion. At Step 102, the serverreceives location data from the mobile device after the pre-determinedsampling duration, at which point the method may end. The location datais responsive to the transmission signal. In particular embodiments,Steps 100-102 are recursively repeated. Although this disclosuredescribes and illustrates particular steps of the method of FIG. 2A asoccurring in a particular order, this disclosure contemplates anysuitable steps of the method of FIG. 2A occurring in any suitable order.Moreover, although this disclosure describes and illustrates particularcomponents carrying out particular steps of the method of FIG. 2A, thisdisclosure contemplates any suitable combination of any suitablecomponents carrying out any suitable steps of the method of FIG. 2A.

FIG. 2B illustrates an example method for movement-based intervalupdates. The method may start at step 110, where a computing devicedynamically determines movement of a mobile computing device withoutmanual user input. At step 112, the computing device dynamically adjustswithout manual user input a frequency or duration of location readingsby the mobile computing device based on the movement of the mobilecomputing device, at which point the method may end. The location datais responsive to the transmission signal. Although this disclosuredescribes and illustrates particular steps of the method of FIG. 2B asoccurring in a particular order, this disclosure contemplates anysuitable steps of the method of FIG. 2B occurring in any suitable order.Moreover, although this disclosure describes and illustrates particularcomponents carrying out particular steps of the method of FIG. 2B, thisdisclosure contemplates any suitable combination of any suitablecomponents carrying out any suitable steps of the method of FIG. 2B.

FIG. 3 illustrates an example mobile device. This disclosurecontemplates mobile device 10 taking any suitable physical form. Herein,reference to a mobile device encompasses any suitable system capable ofconnecting to a network and determining its geographical location. As anexample and not by way of limitation, mobile device 10 may be asingle-board computer system (SBC) (such as, for example, acomputer-on-module (COM) or system-on-module (SOM)), a laptop ornotebook computer system, a mobile telephone, a smartphone, a personaldigital assistant (PDA), a tablet computer system, or a combination oftwo or more of these. In particular embodiments, mobile device 10 mayhave a touch screen 12 as an input component. In the example of FIG. 3,touch screen 12 is incorporated on a front surface of mobile device 10.In the case of capacitive touch sensors, there may be two types ofelectrodes: transmitting and receiving. These electrodes may beconnected to a controller designed to drive the transmitting electrodeswith electrical pulses and measure the changes in capacitance from thereceiving electrodes caused by a touch or proximity input. In theexample of FIG. 3, one or more antennae 14A-C may be incorporated intoone or more sides of mobile device 10. Antennae 14A-C are componentsthat convert electric current into radio waves, and vice versa. Duringtransmission of signals, a transmitter applies an oscillating radiofrequency (RF) electric current to terminals of antenna 14A-C, andantenna 14A-C radiates the energy of the applied the current aselectromagnetic (EM) waves. During reception of signals, antennae 14A-Cconvert the power of an incoming EM wave into a voltage at the terminalsof antennae 14A-C. The voltage may be transmitted to a receiver foramplification.

FIG. 4 illustrates example internal components of an example mobiledevice. Where appropriate, one or more mobile devices 10 may performwithout substantial spatial or temporal limitation one or more steps ofone or more methods described or illustrated herein. As an example andnot by way of limitation, one or more mobile devices 10 may perform inreal time or in batch mode one or more steps of one or more methodsdescribed or illustrated herein. In particular embodiments, one or moremobile devices 10 performs one or more steps of one or more methodsdescribed or illustrated herein. In particular embodiments, one or moremobile devices 10 provides functionality described or illustratedherein. In particular embodiments, software running on one or moremobile devices 10 performs one or more steps of one or more methodsdescribed or illustrated herein or provides functionality described orillustrated herein. Particular embodiments include one or more portionsof one or more mobile devices 10.

In particular embodiments, mobile device 10 includes a processor 16,memory 18, storage 22, an input/output (I/O) interface 24, acommunication component 20, and a bus 26. Although this disclosuredescribes and illustrates a particular mobile device having a particularnumber of particular components in a particular arrangement, thisdisclosure contemplates any suitable mobile device having any suitablenumber of any suitable components in any suitable arrangement. Inparticular embodiments, processor 16 includes hardware for executinginstructions, such as those making up a computer program or application.As an example and not by way of limitation, to execute instructions,processor 16 may retrieve (or fetch) the instructions from an internalregister, an internal cache, memory 18, or storage 22; decode andexecute them; and then write one or more results to an internalregister, an internal cache, memory 18, or storage 22.

In particular embodiments, processor 16 may include one or more internalcaches for data, instructions, or addresses. This disclosurecontemplates processor 16 including any suitable number of any suitableinternal caches, where appropriate. As an example and not by way oflimitation, processor 16 may include one or more instruction caches, oneor more data caches, and one or more translation lookaside buffers(TLBs). Instructions in the instruction caches may be copies ofinstructions in memory 18 or storage 22, and the instruction caches mayspeed up retrieval of those instructions by processor 16. Data in thedata caches may be copies of data in memory 18 or storage 22 forinstructions executing at processor 16 to operate on; the results ofprevious instructions executed at processor 16 for access by subsequentinstructions executing at processor 16 or for writing to memory 18 orstorage 22; or other suitable data. The data caches may speed up read orwrite operations by processor 16. The TLBs may speed up virtual-addresstranslation for processor 16. In particular embodiments, processor 16may include one or more internal registers for data, instructions, oraddresses. This disclosure contemplates a processor 16 including anysuitable number of any suitable internal registers, where appropriate.Where appropriate, processor 16 may include one or more arithmetic logicunits (ALUs); be a multi-core processor; or include one or moreprocessors. Although this disclosure describes and illustrates aparticular processor, this disclosure contemplates any suitableprocessor.

In particular embodiments, software executed by processor 16 may includean OS. The OS may include a kernel or any number of device driverscorresponding to one or more hardware components of mobile device 10. Asan example and not by limitation, if mobile device 10 is a smartphone,then the OS may be a mobile operating system, such as for example,WINDOWS Phone, ANDROID, Symbian, IOS, or Bada. In particularembodiments, one or more software applications may be executed on mobiledevice 10. In particular embodiments, the applications may be nativeapplications installed and residing on mobile device 10. As an exampleand not by way of limitation, an application (e.g. GOOGLE MAPS) maydisplay a map on a touch screen, search for addresses and businesses, orprovide directions to a geographic location; a second application mayprovide remote access to email; a third application (i.e. a web browser)may enable the device user to browse and search the Internet; a fourthapplication may control a camera to take photos or record videos; and afifth application may allow the device user to receive and initiatevoice-over Internet Protocol (VoIP) or cellular network calls. Thesoftware applications may have a user interface (UI) and may implementone or more specific functionalities. The software applications mayinclude one or more software modules implementing the specificfunctionalities. The executable code of the software applications may bestored in memory 18 or storage 22 of mobile device 10.

In particular embodiments, memory 18 includes main memory for storinginstructions for processor 16 to execute or data for processor 16 tooperate on. As an example and not by way of limitation, mobile device 10may load instructions from storage 22 or another source (such as, forexample, another mobile device 10) to memory 18. Processor 16 may thenload the instructions from memory 18 to an internal register or internalcache. To execute the instructions, processor 16 may retrieve theinstructions from the internal register or internal cache and decodethem. During or after execution of the instructions, processor 16 maywrite one or more results (which may be intermediate or final results)to the internal register or internal cache. Processor 16 may then writeone or more of those results to memory 18. In particular embodiments,processor 16 executes only instructions in one or more internalregisters or internal caches or in memory 18 (as opposed to storage 22or elsewhere) and operates only on data in one or more internalregisters or internal caches or in memory 18 (as opposed to storage 22or elsewhere).

One or more memory buses (which may each include an address bus and adata bus) may couple processor 16 to memory 18. Bus 26 may include oneor more memory buses, as described below. In particular embodiments, oneor more memory management units (MMUs) reside between processor 16 andmemory 18 and facilitate accesses to memory 18 requested by processor16. In particular embodiments, memory 18 includes random-access memory(RAM). This RAM may be volatile memory, where appropriate Whereappropriate, this RAM may be dynamic RAM (DRAM) or static RAM (SRAM).Moreover, where appropriate, this RAM may be single-ported ormulti-ported RAM. This disclosure contemplates any suitable RAM. Memory18 may include one or more memories, where appropriate. Although thisdisclosure describes and illustrates particular memory, this disclosurecontemplates any suitable memory.

In particular embodiments, storage 22 includes mass storage for data orinstructions. As an example and not by way of limitation, storage 22 mayinclude a hard-disk drive (HDD), a floppy disk drive, flash memory, or acombination of two or more of these. Storage 22 may include removable ornon-removable (or fixed) media, where appropriate. Storage 22 may beinternal or external to mobile device 10, where appropriate. Inparticular embodiments, storage 22 is non-volatile, solid-state memory.In particular embodiments, storage 22 includes read-only memory (ROM).Where appropriate, this ROM may be mask-programmed ROM, programmable ROM(PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM),electrically alterable ROM (EAROM), or flash memory or a combination oftwo or more of these. This disclosure contemplates mass storage 22taking any suitable physical form. Storage 22 may include one or morestorage control units facilitating communication between processor 16and storage 22, where appropriate. Where appropriate, storage 22 mayinclude one or more storages 22. Although this disclosure describes andillustrates particular storage, this disclosure contemplates anysuitable storage.

In particular embodiments, I/O interface 24 includes hardware, software,or both providing one or more interfaces for communication betweenmobile device 10 and one or more I/O devices. Mobile device 10 mayinclude one or more of these I/O devices, where appropriate. One or moreof these I/O devices may enable communication between a user and mobiledevice 10. As an example and not by way of limitation, an I/O device mayinclude a keyboard, keypad, one or more sensors, touch screen,microphone, monitor, mouse, printer, scanner, speaker, digital stillcamera, stylus, trackball, video camera, another suitable I/O device ora combination of two or more of these. This disclosure contemplates anysuitable I/O devices and any suitable I/O interfaces 24 for them. Whereappropriate, I/O interface 24 may include one or more device or softwaredrivers enabling processor 16 to drive one or more of these I/O devices.I/O interface 24 may include one or more I/O interfaces 24, whereappropriate. Although this disclosure describes and illustrates aparticular I/O interface, this disclosure contemplates any suitable I/Ointerface.

In particular embodiments, communication component 20 includes hardware,software, or both providing one or more interfaces for communication(such as, for example, packet-based communication) between mobile device10 and one or more other mobile devices 10 or one or more networks. Asan example and not by way of limitation, communication component 20 mayinclude a network interface controller (NIC) or network adapter forcommunicating with an Ethernet or other wire-based network or a wirelessNIC (WNIC), wireless adapter for communicating with a wireless network,such as for example a WI-FI network or modem for communicating with acellular network, such as for example 3G, or Long Term Evolution (LTE)network. This disclosure contemplates any suitable network and anysuitable communication component 20 for it. As an example and not by wayof limitation, mobile device 10 may communicate with an ad hoc network,a personal area network (PAN), a LAN, a WAN, a MAN, or one or moreportions of the Internet or a combination of two or more of these. Oneor more portions of one or more of these networks may be wired orwireless. As another example, mobile device 10 may communicate with awireless PAN (WPAN) (such as, for example, a BLUETOOTH WPAN), a WI-FInetwork, a WI-MAX network, a cellular telephone network (such as, forexample, a Global System for Mobile Communications (GSM), 3G, or LTEnetwork), or other suitable wireless network or a combination of two ormore of these. Mobile device 10 may include any suitable communicationcomponent for any of these networks, where appropriate. Communicationcomponent 20 may include one or more communication components, whereappropriate. Although this disclosure describes and illustrates aparticular communication component, this disclosure contemplates anysuitable communication component.

In particular embodiments, bus 26 includes hardware, software, or bothcoupling components of mobile device 10 to each other. As an example andnot by way of limitation, bus 26 may include a graphics bus, an EnhancedIndustry Standard Architecture (EISA) bus, a front-side bus (FSB), aHYPERTRANSPORT (HT) interconnect, an Industry Standard Architecture(ISA) bus, an INFINIBAND interconnect, a low-pin-count (LPC) bus, amemory bus, a Micro Channel Architecture (MCA) bus, a serial advancedtechnology attachment (SATA) bus, a Video Electronics StandardsAssociation local bus (VLB), or another suitable bus or a combination oftwo or more of these. Bus 26 may include one or more buses 26, whereappropriate. Although this disclosure describes and illustrates aparticular bus, this disclosure contemplates any suitable bus orinterconnect.

In particular embodiments, mobile device 10, may include one or moresensors, such as for example, an accelerometer, gyroscope, proximitysensor, light sensor, or biometric sensors. In particular embodiments,the sensors may detect movement of mobile device 10. As an example andnot by way of limitation, an accelerometer may be configured to detectwhether the mobile device 10 is moving and the speed of the movement. Asanother example, a gyroscope may be configured to detect movement ofmobile device 10 through measurements of the orientation of mobiledevice 10. In particular embodiments, a sensors hub may be included inmobile device 10. Sensors of mobile device 10 may be connected to thesensors hub, which may be a processor that controls the sensors, managespower for sensors, processes sensor inputs, aggregates sensor data, orperforms certain sensor functions. In particular embodiments, the sensorhub of mobile device 10 may process the environmental data obtained fromthe sensors to determine movement of mobile device 10. Although thisdisclosure describes detecting motion of a mobile device with particularsensors, this disclosure contemplates detecting motion of a mobiledevice with any suitable sensor or combination of sensors.

As described above, a signal sent by the social-networking system mayactivate one or more sensors of mobile device 10 to collectenvironmental data. As an example and not by way of limitation, theactivation signal sent to the application of mobile device 10 mayactivate one or more sensors of mobile device 10 to obtain environmentaldata. Alternatively, one or more sensors of mobile device 10 mayautomatically and without input from the social-networking system sendenvironmental data to the social-networking system as a periodic update,in response to a change in the environment of mobile device 10, or anycombination thereof. In particular embodiments, the environmental datacollected by one or more sensors of mobile device 10 may detect movementof mobile device 10. As an example and not by way of limitation, anaccelerometer may detect a change of acceleration, such as for examplefrom rest to motion, of mobile device 10 and automatically sendenvironmental data to the social-networking system associated withmovement of mobile device 10. As another example, a gyroscope may detecta change of orientation of mobile device 10 indicating movement ofmobile device 10 and send data associated with movement of mobile device10 to the social-networking system. As described above, environmentaldata from the sensors and location data from the location service ofmobile device 10 may be sent to the social-networking system. Inparticular embodiments, the sensor hub may determine movement of mobiledevice based on the environmental data and send a signal to thesocial-networking system indicating a movement of mobile device 10 hasoccurred. As described above, the social-networking system maydynamically adjust the pre-determined sampling duration and pollingfrequency of the signal sent to the application of mobile device 10based at least in part on the environmental data obtained by the sensorsof mobile device 10 or the signal from mobile device 10 indicatingmovement has occurred.

FIG. 5 illustrates an example communication component of an examplemobile device. As described above, communication component 20 of themobile device may include one or more antennae 14A-E and one or morecommunication interfaces for wireless communication. As an example andnot by way of limitation, antennae 14A-E supports use of wirelesscommunication protocols such as for example, 3G, LTE, BLUETOOTH, WI-FI,GPS, etc. by mobile device 10. Each of the various wirelesscommunication protocols tend to operate within a particular frequencyrange. Although this disclosure describes and illustrates antennaesupporting particular wireless communication protocols, this disclosurecontemplates antennae supporting any suitable wireless communicationprotocols. Modem 28 is coupled to antennae 14A-E and configures antennae14A-E to operate at the particular frequency (i.e. resonant frequency)associated with the appropriate wireless protocol. Modem 28 isconfigured to processes the wireless communication signals received byantennae 14A-E. Herein, reference to a modem encompasses any suitablesignal processing component that processes analog or digital wirelesssignals or performs a correction of wireless communication signals.Modem 28 may be coupled to logic 29 of communication component 16 or theprocessor of the mobile device.

As described above, antennae 14A-E are configured to convert a receivedEM signal into an electrical signal at the terminals of antennae 14A-E.The electrical signal at the terminals of antennae 14A-E is transmittedto modem 28. In particular embodiments, when the mobile device accessesthe Internet through a 3G or LTE data network, a primary antenna 14A anda secondary antenna 14B is used. Modem 28 configures antennae 14A-B foruse with one or more wireless protocols. Modem 28 is configured tooptimize the efficiency of the power transfer between the antennae andthe modem within the frequency range associated with the wirelessprotocol used by the mobile device, as described below. In particularembodiments, modem 28 transmits data encoding a response shift in thesignals received by the mobile device to logic 30. Logic 29 may beconfigured to process the encoded response-shift data received frommodem 28 and initiate changes to the configuration of the mobile devicebased on the received response-shift data.

Herein, a computer-readable non-transitory storage medium or media mayinclude one or more semiconductor-based or other integrated circuits(ICs) (such, as for example, field-programmable gate arrays (FPGAs) orapplication-specific ICs (ASICs)), hard disk drives (HDDs), hybrid harddrives (HHDs), optical discs, optical disc drives (ODDs),magneto-optical discs, magneto-optical drives, floppy disks ordiskettes, floppy disk drives (FDDs), magnetic tapes, solid-state drives(SSDs), RAM-drives, SECURE DIGITAL cards or drives, any other suitablecomputer-readable non-transitory storage medium, or any suitablecombination of two or more of these, where appropriate. Acomputer-readable non-transitory storage medium may be volatile,non-volatile, or a combination of volatile and non-volatile, whereappropriate.

Herein, “or” is inclusive and not exclusive, unless expressly indicatedotherwise or indicated otherwise by context. Therefore, herein, “A or B”means “A, B, or both,” unless expressly indicated otherwise or indicatedotherwise by context. Moreover, “and” is both joint and several, unlessexpressly indicated otherwise or indicated otherwise by context.Therefore, herein, “A and B” means “A and B, jointly or severally,”unless expressly indicated otherwise or indicated otherwise by context.

This disclosure encompasses all changes, substitutions, variations,alterations, and modifications to the example embodiments herein that aperson having ordinary skill in the art would comprehend. Moreover,although this disclosure describes and illustrates respectiveembodiments herein as including particular components, elements,functions, operations, or steps, any of these embodiment may include anycombination or permutation of any of the components, elements,functions, operations, or steps described or illustrated anywhere hereinthat a person having ordinary skill in the art would comprehend.Furthermore, reference in the appended claims to an apparatus or systemor a component of an apparatus or system being adapted to, arranged to,capable of, configured to, enabled to, operable to, or operative toperform a particular function encompasses that apparatus, system,component, whether or not it or that particular function is activated,turned on, or unlocked, as long as that apparatus, system, or componentis so adapted, arranged, capable, configured, enabled, operable, oroperative.

What is claimed is:
 1. A method comprising: by a server, sending at apre-determined polling frequency an activation signal waking from asleep mode an application on a mobile computing device of a first userand causing the application to activate a location service of the mobilecomputing device for a time period of a pre-determined samplingduration, the pre-determined polling frequency and the pre-determinedsampling duration being determined at least in part by detecting amovement of the mobile computing device; by the server, receivinglocation data from the mobile computing device after the pre-determinedsampling duration, by the server, accessing a social graph of asocial-networking system, the first user being a user of thesocial-networking system; by the server, determining whether a currentlocation of one or more second users is within a pre-determinedproximity from the first user based on the received location data of themobile computing device, the second users being users of thesocial-networking system and connected to the first user within thesocial graph; and by the server, when it is determined that the currentlocation of a second user of the one or more second users is within thepre-determined proximity from the first user, notifying the first userof the location of the second user.
 2. The method of claim 1, furthercomprising, after receiving the location data from the mobile computerdevice, reverting the application back to the sleep mode anddeactivating the location service of the mobile computing device until anext activation signal is sent based on the pre-determined pollingfrequency.
 3. The method of claim 1, further comprising: by the server,determining a battery level of the mobile computing device, wherein whenthe battery level is lower than a pre-determined level, decreasing thetime period of the pre-determined sampling duration.
 4. The method ofclaim 1, wherein detecting a movement of the mobile computing devicefurther comprises: by the server, determining a travel distance of themobile computing device based on the received location data; and by theserver, adaptively adjusting the pre-determined polling frequency andpre-determined sampling duration based at least in part on thedetermined travel distance of the mobile computing device.
 5. The methodof claim 4, wherein when the travel distance is determined to be morethan a pre-determined travel distance, sending lower-bandwidthinformation to the mobile computing device.
 6. The method of claim 1,wherein the travel distance is determined based at least in part onoutput from an accelerometer or gyroscope of the mobile computingdevice, and wherein the location service comprises polling a location ofa cellular tower, a location of a WI-FI hotspot, or a GPS function ofthe mobile computing device.
 7. One or more computer-readablenon-transitory storage media embodying software configured when executedto: send at a pre-determined polling frequency an activation signalwaking from a sleep mode an application on a mobile computing device ofa first user and causing the application to activate a location serviceof the mobile computing device for a time period of a pre-determinedsampling duration, the pre-determined polling frequency and thepre-determined sampling duration being determined at least in part bydetecting a movement of the mobile computing device; receive locationdata from the mobile computing device after the pre-determined samplingduration; access a social graph of a social-networking system, the firstuser being a user of the social-networking system; determine whether acurrent location of one or more second users is within a pre-determinedproximity from the first user based on the received location data of themobile computing device, the second users being users of thesocial-networking system and connected to the first user within thesocial graph; and when it is determined that the current location of asecond user of the one or more second users is within the pre-determinedproximity from the first user, notify the first user of the location ofthe second user.
 8. The media of claim 7, wherein the software isfurther configured to, after receiving the location data from the mobilecomputer device, revert the application back to the sleep mode anddeactivate the location service of the mobile computing device until anext activation signal is sent based on the pre-determined pollingfrequency.
 9. The media of claim 7, wherein the software is furtherconfigured to determine a battery level of the mobile computing devicesuch that when the battery level is lower than a pre-determined level,the time period of the pre-determined sampling duration is decreased.10. The media of claim 7, wherein detecting a movement of the mobilecomputing device further comprises: determining a travel distance of themobile computing device based on the received location data; andadaptively adjusting the pre-determined polling frequency andpre-determined sampling duration based at least in part on thedetermined travel distance of the mobile computing device.
 11. The mediaof claim 10, wherein when the travel distance is determined to be morethan a pre-determined travel distance, sending lower-bandwidthinformation to the mobile computing device.
 12. The media of claim 7,wherein the travel distance is determined based at least in part onoutput from an accelerometer or gyroscope of the mobile computingdevice, and wherein the location service comprises polling a location ofa cellular tower, a location of a WI-FI hotspot, or a GPS function ofthe mobile computing device.
 13. A device comprising: a processorcoupled to a storage; and one or more computer-readable non-transitorystorage media coupled to the processor and embodying software configuredwhen executed to: send at a pre-determined polling frequency anactivation signal waking from a sleep mode an application on a mobilecomputing device of a first user and causing the application to activatea location service of the mobile computing device for a time period of apre-determined sampling duration, the pre-determined polling frequencyand the pre-determined sampling duration being determined at least inpart by detecting a movement of the mobile computing device; receivelocation data from the mobile computing device after the pre-determinedsampling duration; access a social graph of a social-networking system,the first user being a user of the social-networking system; determinewhether a current location of one or more second users is within apre-determined proximity from the first user based on the receivedlocation data of the mobile computing device, the second users beingusers of the social-networking system and connected to the first userwithin the social graph; and when it is determined that the currentlocation of a second user of the one or more second users is within thepre-determined proximity from the first user, notify the first user ofthe location of the second user.
 14. The device of claim 13, wherein thesoftware is further configured to, after receiving the location datafrom the mobile computer device, revert the application back to thesleep mode and deactivate the location service of the mobile computingdevice until a next activation signal is sent based on thepre-determined polling frequency.
 15. The device of claim 13, whereinthe software is further configured to determine a battery level of themobile computing device such that when the battery level is lower than apre-determined level, the time period of the pre-determined samplingduration is decreased.
 16. The device of claim 13, wherein detecting amovement of the mobile computing device further comprises: determining atravel distance of the mobile computing device based on the receivedlocation data; and adaptively adjusting the pre-determined pollingfrequency and pre-determined sampling duration based at least in part onthe determined travel distance of the mobile computing device.
 17. Thedevice of claim 16, wherein when the travel distance is determined to bemore than a pre-determined travel distance, sending lower-bandwidthinformation to the mobile computing device.
 18. The device of claim 13,wherein the travel distance is determined based at least in part onoutput from an accelerometer or gyroscope of the mobile computingdevice, and wherein the location service comprises polling a location ofa cellular tower, a location of a WI-FI hotspot, or a GPS function ofthe mobile computing device.